草庐IT

c++ - 使用管道从子进程重定向 I/O - winapi

我正在使用一个提供api的应用程序,以便更轻松地编写脚本。基本上,当您编写有效输入时,它会输出一个答案。我想使用该输出来发送更多输入,例如:Input:Output:1,56,23InputOutput:"Apple"我想要做的是一个写入目标进程STDIN,然后从它的STDOUT读取输出的程序。为此,我主要从那里获取代码:CreatingaChildProcesswithRedirectedInputandOutput(Windows)-MSDN唯一的问题是,为了从子进程读取,我首先需要关闭用于写入它的父进程的句柄,这意味着我不能使用子进程的输出来写入更多的东西。这是从msdn中提取的

c++ - MFC 64 位代码在 Windows Server 2008 R2 上比 32 位代码慢

我运行以下MFC代码:CArrayl_Arr;for(inti=0;i如果我构建64位版本,代码运行速度比32位版本慢2倍。我尝试了Debug和Release版本。时间如下:Debug64bit:15085msDebug32bit:8128msRelease64bit:8237msRelease32bit:4695ms我的配置:MicrosoftVisualStudio2005Version8.0.50727.4039(QFE.050727-4000)WindowsServer2008R2Standard64bitProcessor:Intel(R)Xeon(R)E5645@2.40G

c++ - vc2013中关于跨dll边界删除指针

来自Doesmsvcrtusesadifferentheapforallocationssince(vs2012/2010/2013),我了解到有可能跨模块边界删除obj甚至使用来自msvc2012或更新版本的MT选项,令人惊讶。但是,在我做了一些测试之后我很困惑(我的平台是win7中的vc2013update4)。我在dll中新建一个obj,并在exe中删除它。当dll和exe都用mt选项编译的时候,看起来确实运行良好。但是,当dll和exe都使用MTd编译时,会出现断言错误'_pfirstblock==phead'。有人能告诉我使用MT/MTd选项编译的模块可以在vs2013中跨模

c# - 与 C#/WinForms 中高度优化的 GDI 代码相比,SharpDX 能带来多少改进?

几年来,我一直在开发C#/GDI图形应用程序。我花了很多时间优化绘图代码。我通过每秒大约10次使PictureBox控件无效并利用Windows触发它时发生的后续OnPaint事件来绘制到屏幕。OnPaint事件使我可以通过PaintEventArgs参数访问Graphics对象。每帧:我画了数百条线,数百个矩形,我也调用了数百次Graphics.DrawString()方法。我开始整理一个SharpDX项目,希望我可以绘制更多2D元素,并更快地绘制到屏幕上。我设置了2个测试项目,使用GDI和SharpDX在屏幕上绘制相同的2D元素。我使用C#StopWatch对象来检测绘制所有2D元

c - 读取 ntdll.dll + offset 导致访问冲突

我试图逐字节读取加载到我的可执行文件中的ntdll.dll的内存。该可执行文件在我的x64windows7机器上编译为x32可执行文件。我编写了一个名为FindPattern的函数,它接收一个特定的字节数组,并在ntdll.dll模块中查找这个字节数组。我已经在其他模块上检查过这个功能,我确信它工作正常。现在当我在我的ntdll模块上使用这个函数时,它在读取内存ntdll+0x1000时崩溃。我在windbg上检查过这个,windbg也不能读取内存:0:000>dbntdll+FF0L2077df0ff00000000000000000-0000000000000000........

C/C++中比较好用的HTTP开源库

以下是一些常用的C/C++开源HTTP库及其对应的开源协议和链接:1、libcurl:使用MIT/X开源协议,支持多种协议和多种数据传输方式,被广泛应用于各种开发场景。官网链接:https://curl.se/libcurl/2、cpp-netlib:使用BoostSoftwareLicense1.0开源协议,提供了HTTP、HTTPS、WebSocket等协议的客户端和服务端实现。官网链接:https://cpp-netlib.org/3、Poco:使用BoostSoftwareLicense1.0开源协议,包含了丰富的网络和HTTP相关功能,可以用于构建高性能的网络应用程序。官网链接:ht

c++ - 防止使用 ImpersonateNamedPipeClient()

当命名管道客户端连接到服务器并写入一些数据时,服务器可以调用ImpersonateNamedPipeClient()冒充客户。(服务器确实需要在调用ImpersonateNamedPipeClient()之前读取数据)。正如我们在thislink中看到的那样,这可能会导致权限提升安全漏洞。是否可以阻止/禁用/拒绝此模拟,以便客户端可以连接到命名管道但不允许服务器模拟?注意1:我知道客户端需要先在命名管道上写。但在某些情况下,客户端需要先写,所以我需要防止这个安全漏洞。注意2:欢迎提供适用于WindowsXP及以上版本的解决方案。 最佳答案

c - 如何在内核模式驱动程序中使用 Winsock 内核 (WSK) 发送原始套接字数据包?

我正在为Win7及更高版本开发一个内核模式驱动程序。我想在驱动程序中发送自定义IP数据包(我想为IP层指定所有字段)。我找到了WinsockKernel(WSK)技术,但它只说明了如何发送和接收TCP和UDP数据包。我知道在用户模式下,WinSockAPI中有原始套接字。所以我想知道是否也有用于Winsock内核的原始套接字接口(interface)?谢谢。 最佳答案 WskSocket支持TCP、UDP和自定义IP包的“原始套接字”:https://msdn.microsoft.com/en-us/library/windows/

c - 尝试将 str 写入具有特殊文件名 "con"的文件,但它被打印到 stdout

FILE*fp=fopen("./con","w");char*s="hello!";fwrite(s,sizeof(char),strlen(s),fp);fclose(fp);return0;如果我的文件名为“con”,那么fwrite()将像printf()一样工作。它是如何工作的? 最佳答案 Windows/DOS有多个reservedfilenames包括CON、PRN、AUX、CLOCK$、NULCOM1、COM2、COM3、COM4LPT1、LPT2、LPT3、LPT4等。CON是标准控制台(输出),所以这是数据的去向

c - 没有声音。通过 RubyDL 使用 Ruby 和 winmm

预期行为:中央C在一台MIDI乐器上演奏,然后在另一台上演奏。实际行为:DL弃用警告并且没有声音。运行Windows7。代码:require"dl/import"classLiveMIDION=0x90OFF=0x80PC=0xc0definitializeopenenddefnote_on(channel,note,velocity=64)message(ON|channel,note,velocity)enddefnote_off(channel,note,velocity=64)message(OFF|channel,note,velocity)enddefprogram_cha